//2024.04.25 23:47 星期四 晴 23号 小8 进场 小孩挺活跃 :) 24号 第一个开始 结茧出现 但是 第一个 好像 茧 没结起来
// 这个 是 下午 启动的 目的是 创建 属性的 增删改查 可以自定义 明天 应该能写完
import { toStringTypeCheck } from '../../../../components/aaanewApp/global/global';

/**
 * 单一属性配置 crud
 * -
 * 根据 属性名称 进行 相关名称的 增删改查
 *
 * 可以自定义 对应函数  指定 创建 某些函数
 *
 * @param {Object} that this
 * @param {String} key property 属性的 一个参数
 * @param {Array|Object} extendProps 扩展函数对象 支持 简单的 数组设置
 */
function userExpose(that, key, extendProps) {
  const defExtenedOperate = { set: setKey, get: getkey };

  let propKVal;
  if (toStringTypeCheck(extendProps, 'array')) {
    for (let i = 0; i < extendProps.length; i++) {
      if (defExtenedOperate.hasOwnProperty(extendProps[i])) {
        propKVal = extendProps[i] + key[0].toUpperCase + key.substring(1);
        that[propKVal] = defExtenedOperate[extendProps[i]];
      }
    }
  } else if (toStringTypeCheck(extendProps, 'object')) {
    for (const prop in extendProps) {
      if (Object.hasOwnProperty.call(extendProps, prop)) {
        that[prop] = extendProps[prop];
      }
    }
  } else {
    userExpose(that, key, ['set', 'get']);
  }

  function setKey(val) {
    that[key] = val;
  }

  function getkey() {
    return that[key];
  }
}

export { userExpose };
